﻿using Microsoft.EntityFrameworkCore;
using Panuon.UI.Silver;
using StockTrading.Model;
using StockTrading.ViewModel;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace StockTrading.View
{
    /// <summary>
    /// Interaction logic for SignInView.xaml
    /// </summary>
    public partial class SignInView : WindowX
    {
        #region Fields
        private bool _isProcessing;
        public  ApplicationDbContext _context;
        private bool _isLogin = false;
        public LoginViewModel loginModel { get; }
        #endregion

        #region Ctor
        public SignInView(LoginViewModel login,ApplicationDbContext _context)
        {
            this._context = _context;
            InitializeComponent();
            ValidatePassword();
            loginModel = login;

        }
        #endregion

        #region Event Handlers
        private async void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            if (_isProcessing)
            {
                return;
            }
            if (!ValidatePassword())
            {
                return;
            }
            _isProcessing = true;
            ButtonHelper.SetIsPending(BtnLogin, true);
            FrmPassword.ValidateResult = ValidateResult.None;
            FrmPassword.Message = null;
            await this.Login(UserName.Text, PwdPassword.Password);
            if (this._isLogin)
            {
                this.Close();
            }
            else
            {
                MessageBoxX.Show(
                    this,
                    "用户名或密码错误",
                    "提示",
                    MessageBoxIcon.Error,
                    DefaultButton.YesOK
                    );
            }
            ButtonHelper.SetIsPending(BtnLogin, false);
            _isProcessing = false;
        }
        private async Task Login(string username, string password)
        {
            var user = await _context.Users.FirstOrDefaultAsync(z => z.LoginName.Equals(username) && z.Password.Equals(password));
            if(user != null)
            {
                loginModel.UserModel = user;
                _isLogin = true;
            }
            
        }
        private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
        {
            ValidatePassword();
        }
        #endregion

        #region Methods
        private void Test()
        {

            _context.Users.Add(new User()
            {
                Name = "崔翔",
                LoginName = "cui",
                Password = "1111111",
                IsAdmin = true,
                CnyFree = 10000,
                CnyFreezed = 0,
            });
            _context.SaveChanges();
            _context.Users.Add(new User()
            {
                Name = "陈小潘",
                LoginName = "cui",
                Password = "1111111",
                IsAdmin = true,
                CnyFree = 10000,
                CnyFreezed = 0,
            });
            _context.Stocks.Add(new Model.Stock()
            {
                Name = "河大股份",
                CompanyDetails = "河南大学是国家“双一流”建设高校、省部共建高校。创立于1912年，始名河南留学欧美预备学校，始建于中国科举考试终结地——河南贡院旧址，1903、1904年最后两场全国会试在这里举行，上千年的科举制度在这里划上句号。1912年，以林伯襄为代表的一批河南仁人先贤，在欧风美雨和辛亥革命胜利的曙光中创办了河南留学欧美预备学校，成为当时中国的三大留学培训基地之一。后历经中州大学、国立第五中山大学、省立河南大学等阶段，1942年改为国立河南大学，成为拥有文、理、工、农、医、法等6大学院的综合性大学，是当时学术实力雄厚、享誉国内外的国立大学之一。新中国成立后，经院系调整，河南大学农学院、医学院、行政学院分别独立设置为河南农学院、河南医学院、河南行政学院，水利、财经等院系也先后调入武汉大学、中南财经政法大学等高校，校本部更名为河南师范学院。后又经开封师范学院、河南师范大学等阶段，1984年恢复河南大学校名。2008年10月，河南省人民政府和教育部签订共建协议，河南大学正式进入省部共建高校行列。2016年9月，学校入选国家“111计划”。2017年9月入选国家“双一流”建设高校。",
                ManagerDetail = "宋纯鹏，男，汉族，1962年1月生，河南省民权县人，中国民主促进会会员，北京大学生物学硕士，中国农业大学理学博士，国家\"973\"计划首席科学家，英国兰卡斯特大学访问学者，现任河南大学校长、博士生导师、教授。全国政协委员。",
                ServiceIntroduction = "。河南大学是全国较早、河南省最早举办成人教育的高等学校，从1955年创办，严守“明德、新民，止于至善”的校训，一代又一代的河南大学成教人荜路蓝缕、百折不挠，与时俱进、开拓创新！"
            });
            _context.SaveChanges();
            _context.Orders.Add(new Model.Order()
            {
                CreateDate = System.DateTime.Now,
                UserId = 2,
                StockId = 1,
                Type = Model.Order.OrderType.Sell,
                Price = 12,
                Undealed = 200,
                Dealed = 0,
                Canceled = 0,
            });
            _context.SaveChanges();
            _context.Orders.Add(new Model.Order()
            {
                CreateDate = System.DateTime.Now,
                UserId = 2,
                StockId = 1,
                Type = Model.Order.OrderType.Sell,
                Price = 13,
                Undealed = 300,
                Dealed = 0,
                Canceled = 0,
            });
            _context.SaveChanges();
            _context.Orders.Add(new Model.Order()
            {
                CreateDate = System.DateTime.Now,
                UserId = 3,
                StockId = 1,
                Type = Model.Order.OrderType.Buy,
                Price = 12.5,
                Undealed = 200,
                Dealed = 0,
                Canceled = 0,
            });
            _context.SaveChanges();
            _context.Orders.Add(new Model.Order()
            {
                CreateDate = System.DateTime.Now,
                UserId = 3,
                StockId = 1,
                Type = Model.Order.OrderType.Buy,
                Price = 13,
                Undealed = 100,
                Dealed = 0,
                Canceled = 0,
            });
            _context.SaveChanges();

            _context.Orders.Add(new Model.Order()
            {
                CreateDate = System.DateTime.Now,
                UserId = 2,
                StockId = 1,
                Type = Model.Order.OrderType.Buy,
                Price = 12,
                Undealed = 200,
                Dealed = 0,
                Canceled = 0,
            });
            _context.SaveChanges();
            _context.Orders.Add(new Model.Order()
            {
                CreateDate = System.DateTime.Now,
                UserId = 2,
                StockId = 1,
                Type = Model.Order.OrderType.Buy,
                Price = 13.1,
                Undealed = 200,
                Dealed = 0,
                Canceled = 0,
            });
            _context.SaveChanges();
        }
        private bool ValidatePassword()
        {
            if (PwdPassword.Password == null || PwdPassword.Password == "")
            {
                FrmPassword.ValidateResult = ValidateResult.Info;
                FrmPassword.Message = "请输入密码！";
                return false;
            }
            else if (PwdPassword.Password.Length < 6)
            {
                FrmPassword.ValidateResult = ValidateResult.Error;
                FrmPassword.Message = "密码是六位的数据字母特殊字符组合";
                return false;
            }
            else
            {
                FrmPassword.ValidateResult = ValidateResult.Success;
                FrmPassword.Message = "";
                return true;
            }
        }
        private void WindowX_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (!_isLogin)
            {
                Application.Current.Shutdown();
            }
        }
        #endregion





    }
}
